import greenfoot.*;  // (World, Actor, GreenfootImage, and Greenfoot)

/**
 * Este es el fumigador que exterminará todos los insectos, tiene zapatos que lo hacen volar.
 */
public class Fumigador extends Mover
{
    int shootdelay=0;
    int mindelay=5;
    private int level=1,vidas,tiros;
    private Label vida,tiro;
    private Nivel1 mund;
    
        
    public Fumigador(Nivel1 world)
    {
       
        mund=world;
        
    }    
    
    
    /**
     * Método que inicializa etiquetas con tiros y vidas.
     */
    public void addedToWorld(World world)
    {
        tiros=20;
        vidas=3;
        vida=new Label("Vidas: "+vidas);
        tiro=new Label("Tiros: "+tiros);
        getWorld().addObject(vida,10,35);
        getWorld().addObject(tiro,10,65);
        
        
    }
    /**
       Función que indica los movimientos y comportamiento del fumigador
     */ 
    public void act() 
    {
       
        vida.setText("Vidas: "+vidas);
        tiro.setText("Tiros: "+tiros);       
        
        shootdelay++;
        
       
        if(Greenfoot.isKeyDown("up"))
       
        {
            turn(-4);
        }
        else 
      
        
        if (Greenfoot.isKeyDown("left")&& !encontroPelota() && !encontroBart() && !encontroEtiqueta()  )
        {
           move(-8);
            
        }
        
        if(Greenfoot.isKeyDown("right")&& !encontroPelota() && !encontroBart() && !encontroEtiqueta() )
        {
            
            move(8);
        }
        
        if(Greenfoot.isKeyDown("down"))
        {
            
            turn(4);
        }
        
        if(Greenfoot.isKeyDown("space"))
        {  
            shoot();
        }
        
        
        if(encontroInsecto1() && vidas>=1){
            vidas--;
        
        setLocation(100,350);}
        
        if(encontroInsecto2()&& vidas>=1){
            vidas--;
        
        setLocation(100,350);}
        
        if(encontroInsecto3()&& vidas>=1){
            vidas--;
        
        setLocation(100,350);}
        
        if(encontroInsectoHijo()&& vidas>=1){
            vidas--;
        
        setLocation(100,350);}
        
        if(encontroMomAlone()&& vidas>=1){
            vidas--;
        
        setLocation(100,350);}
       
        if (encontroRecarga()){
            tiros=20;
        }
        
        if (vidas==0 ){
            
            mund.perdiste();
        }
        
          
               
        
          mund.checagano();
        
           
        
        
    }

    
    //Shoots the bullet
    public void shoot()
    {
        if(shootdelay >= mindelay && tiros>0)
        {
            int rot = getRotation()-10;
            int xOffset = (int)(40 *Math.cos(Math.toRadians(rot)));
            int yOffset = (int)(40 *Math.sin(Math.toRadians(rot)));
            Bullet b = new Bullet(getRotation());

            getWorld().addObject(b, getX()+xOffset, getY()+yOffset);
            shootdelay = 0;
            tiros--;
 
        }
    }

   /**
       Funciones que checan si ha encontrado un insecto.
     */ 
    
    public boolean encontroInsecto1()
    {
        Actor insecto = getOneObjectAtOffset(0, 0, Ins1.class);
        if(insecto != null) {
            return true;
            
        }
        else {
            return false;
        }
    } 
    
    public boolean encontroInsecto2()
    {
        Actor insecto = getOneObjectAtOffset(0, 0, Ins2.class);
        if(insecto != null) {
            return true;
        }
        else {
            return false;
        }
    }
     public boolean encontroInsecto3()
    {
        Actor insecto = getOneObjectAtOffset(0, 0, Ins3.class);
        if(insecto != null) {
            return true;
        }
        else {
            return false;
        }
    } 
    
    public boolean encontroInsectoHijo()
    {
        Actor insecto = getOneObjectAtOffset(0, 0, InsHijo.class);
        if(insecto != null) {
            return true;
        }
        else {
            return false;
        }
    } 
    
     public boolean encontroMomAlone()
    {
        Actor insecto = getOneIntersectingObject( MomAlone.class);
        if(insecto != null) {
            return true;
        }
        else {
            return false;
        }
    } 
    /**
       Funciones que indican si ha encontrado algún obstáculo.
     */ 
    public boolean encontroPelota()
    {
        Actor pelota=null;
        
        pelota=getOneIntersectingObject(Pelota.class);
         if (pelota!= null)
            return true;
        else
            return false;
    }
    
     public boolean encontroBart()
    {
        Actor bart=null;
        
        bart=getOneIntersectingObject(Bart.class);
         if (bart!= null)
            return true;
        else
            return false;
    }
    
     public boolean encontroEtiqueta()
    {
        Actor etiqueta=null;
        
        etiqueta=getOneIntersectingObject(Label.class);
         if (etiqueta!= null)
            return true;
        else
            return false;
    }
    /**
       Función que detecta si ha llegado al lugar de recarga.
     */ 
     public boolean encontroRecarga()
    {
        Actor recarga = getOneObjectAtOffset(0, 0, Recarga.class);
        if(recarga != null) {
            return true;
        }
        else {
            return false;
        }
    } 
    
  
    
   

}
    




    